package com.vviton.zyhj.admin.cors;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.vviton.zyhj.admin.content.CommonConstants;
import com.vviton.zyhj.admin.view.ParamJfsz;
import com.vviton.zyhj.admin.view.ParamJfye;
import com.vviton.zyhj.admin.view.ViewHqmx;
import com.vviton.zyhj.admin.view.ViewJfye;
import com.vviton.zyhj.admin.view.ViewZcmx;
import com.vviton.zyhj.common.utils.DateUtils;
import com.vviton.zyhj.common.utils.StringUtils;
import com.vviton.zyhj.common.utils.page.Page;
import com.vviton.zyhj.common.view.ParamJfxxList;
import com.vviton.zyhj.common.view.ViewJfxxList;
import com.wdcloud.opcenter.integral.entity.yyxt.TYyxtCode;
import com.wdcloud.opcenter.integral.entity.yyxt.tj.TYyxtTjQzjftjar;
import com.wdcloud.opcenter.integral.provider.CommonCorsService;
import com.wdcloud.opcenter.integral.provider.JfglCorsService;
import com.wdcloud.opcenter.integral.view.ParmPtHqmx;
import com.wdcloud.opcenter.integral.view.ParmPtqy;
import com.wdcloud.opcenter.integral.view.ParmPtzcmx;
import com.wdcloud.opcenter.integral.view.ParmTYyxtJfglHzfjfhqxxb;
import com.wdcloud.opcenter.integral.view.ParmTYyxtJfglHzfjfzcxxb;
import com.wdcloud.opcenter.integral.view.PtqyView;
import com.wdcloud.opcenter.integral.view.ViewPthqmx;
import com.wdcloud.opcenter.integral.view.ViewPtzcmx;
import com.wdcloud.opcenter.integral.view.ViewTYyxtJfglHzfjfhqxxb;
import com.wdcloud.opcenter.integral.view.ViewTYyxtJfglHzfjfzcxxb;
import com.wdcloud.opcenter.integral.view.jfgl.ParamJfglxx;
import com.wdcloud.opcenter.integral.view.jfgl.ParamJfszZyhj;
import com.wdcloud.opcenter.integral.view.jfgl.ViewJftjar;
import com.wdcloud.opcenter.integral.view.jfgl.Viewjftjaxw;

/**
 * ClassName: JfglCors <br/>
 * Function: 积分Cors. <br/>
 * Date: 2016年11月29日 上午10:18:19 <br/>
 *
 * @author zhucb
 * @version 1.0
 * @since JDK 1.7
 */
@Component
public class JfglPtCors {

    /** 积分系统接口 **/
    @Autowired
    private JfglCorsService zajfglCorsService;

    @Autowired
    private CommonCorsService commonCorsService;

    /**
     * getHqjfxxList,跨库（积分平台）获取积分获取明细. <br/>
     * Author: zhucb <br/>
     * Create Date: 2016年11月29日 <br/>
     * ===============================================================<br/>
     * Modifier: zhucb <br/>
     * Modify Date: 2016年11月29日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param param 参数
     * @param lang 语言
     * @return Page
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getHqjfxxList(ParamJfxxList param, String lang) {
        Page zyhyPage = new Page();
        com.wdcloud.opcenter.common.utils.page.Page page = new com.wdcloud.opcenter.common.utils.page.Page();
        ParmTYyxtJfglHzfjfhqxxb parmTYyxtJfglHzfjfhqxxb = new ParmTYyxtJfglHzfjfhqxxb();
        parmTYyxtJfglHzfjfhqxxb.setZh(param.getZh());
        parmTYyxtJfglHzfjfhqxxb.setHqjfStart(param.getStarttime());
        parmTYyxtJfglHzfjfhqxxb.setHqjfEnd(param.getEndtime());
        parmTYyxtJfglHzfjfhqxxb.setCurrPage(param.getCurrPage());
        parmTYyxtJfglHzfjfhqxxb.setPageSize(param.getPageSize());
        page = zajfglCorsService.getHzfJfhqmxPagination(parmTYyxtJfglHzfjfhqxxb, lang);
        List<ViewTYyxtJfglHzfjfhqxxb> jfglHzfjfhqxxbs = (List<ViewTYyxtJfglHzfjfhqxxb>) page.getData();
        List<ViewJfxxList> jfxxList = new ArrayList<ViewJfxxList>();
        if (CollectionUtils.isNotEmpty(jfglHzfjfhqxxbs)) {
            for (ViewTYyxtJfglHzfjfhqxxb hqxxb : jfglHzfjfhqxxbs) {
                ViewJfxxList hqJf = new ViewJfxxList();
                hqJf.setBz(hqxxb.getBz());
                hqJf.setJfz(String.valueOf(hqxxb.getFz()));
                hqJf.setRq(DateUtils.format(hqxxb.getHqrq()));
                hqJf.setXwDesc(hqxxb.getJfhqxwDesc());
                hqJf.setXw(hqxxb.getJfhqxw());
                jfxxList.add(hqJf);
            }
            zyhyPage.setData(jfxxList);
            zyhyPage.setTotal(page.getTotal());
        }

        return zyhyPage;

    }

    /**
     * getZcjfxxList,跨库（积分平台）获取积分支出明细. <br/>
     * Author: zhucb <br/>
     * Create Date: 2016年11月29日 <br/>
     * ===============================================================<br/>
     * Modifier: zhucb <br/>
     * Modify Date: 2016年11月29日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param param 参数
     * @param lang 语言
     * @return Page
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getZcjfxxList(ParamJfxxList param, String lang) {
        Page zyhyPage = new Page();
        com.wdcloud.opcenter.common.utils.page.Page page = new com.wdcloud.opcenter.common.utils.page.Page();
        ParmTYyxtJfglHzfjfzcxxb parmTYyxtJfglHzfjfzcxxb = new ParmTYyxtJfglHzfjfzcxxb();
        parmTYyxtJfglHzfjfzcxxb.setZcjfStart(param.getStarttime());
        parmTYyxtJfglHzfjfzcxxb.setZcjfEnd(param.getEndtime());
        parmTYyxtJfglHzfjfzcxxb.setZh(param.getZh());
        parmTYyxtJfglHzfjfzcxxb.setCurrPage(param.getCurrPage());
        parmTYyxtJfglHzfjfzcxxb.setPageSize(param.getPageSize());
        page = zajfglCorsService.getHzfJfZcmxPagination(parmTYyxtJfglHzfjfzcxxb, lang);
        List<ViewTYyxtJfglHzfjfzcxxb> jfzcList = (List<ViewTYyxtJfglHzfjfzcxxb>) page.getData();
        List<ViewJfxxList> zcjfList = new ArrayList<ViewJfxxList>();
        if (CollectionUtils.isNotEmpty(jfzcList)) {
            for (ViewTYyxtJfglHzfjfzcxxb jfzcxxb : jfzcList) {
                ViewJfxxList zcJf = new ViewJfxxList();
                zcJf.setBz(jfzcxxb.getBz());
                zcJf.setJfz(String.valueOf(jfzcxxb.getFz()));
                zcJf.setRq(DateUtils.format(jfzcxxb.getZcrq()));
                zcJf.setXw(jfzcxxb.getJfzcfs());
                zcJf.setXwDesc(jfzcxxb.getJfzcfsDesc());
                zcjfList.add(zcJf);
            }
            zyhyPage.setData(zcjfList);
            zyhyPage.setTotal(page.getTotal());
        }

        return zyhyPage;
    }

    /**
     * getDqdmList,获取试用地区. <br/>
     * Author: huangqq <br/>
     * Create Date: 2016年4月20日 <br/>
     * ===============================================================<br/>
     * Modifier: LC <br/>
     * Modify Date: 2016年4月20日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param lang 语言
     * @return 试用地区
     * @since JDK 1.7
     */
    public List<TYyxtCode> getDqdmList(String lang) {
        List<TYyxtCode> list = commonCorsService.getDqdmList(lang);
        return list;
    }

    /**
     * getZhlxList,获取账号类型集合. <br/>
     * Author: yaojie <br/>
     * Create Date: 2016年4月29日 <br/>
     * ===============================================================<br/>
     * Modifier: yaojie <br/>
     * Modify Date: 2016年4月29日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param lang 语言
     * @return 码表Code集合
     * @since JDK 1.7
     */
    public List<TYyxtCode> getZhlxList(String lang) {
        List<TYyxtCode> list = commonCorsService.getZhlxList(lang);
        return list;
    }

    /**
     * getJfyePagination,获取积分余额(分页). <br/>
     * Author: yaojie <br/>
     * Create Date: 2016年4月15日 <br/>
     * ===============================================================<br/>
     * Modifier: yaojie <br/>
     * Modify Date: 2016年4月15日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param paramJfye 积分余额参数实体
     * @param lang 语言
     * @return 分页实体
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getJfyePagination(ParamJfye paramJfye, String lang) {
        Page page = new Page();
        ParmPtqy parm = new ParmPtqy();
        parm.setCurrPage(paramJfye.getCurrPage());
        parm.setPageSize(paramJfye.getPageSize());
        parm.setQymc(paramJfye.getQymc());
        parm.setZhlx(paramJfye.getZhlx());
        com.wdcloud.opcenter.common.utils.page.Page ptPage = zajfglCorsService.getPtQyPagination(parm, lang);
        List<PtqyView> ls = (List<PtqyView>) ptPage.getData();
        List<ViewJfye> viewList = new ArrayList<ViewJfye>();
        if (ls == null) {
            page.setData(viewList);
            return page;
        }
        for (PtqyView ptJfcxView : ls) {
            ViewJfye viewJfye = new ViewJfye();
            viewJfye.setDqmc(ptJfcxView.getDqmc());
            viewJfye.setFz(String.valueOf(ptJfcxView.getFz()));
            viewJfye.setZhlx(ptJfcxView.getZhlx());
            viewJfye.setZhlxDesc(ptJfcxView.getZhlxDesc());
            viewList.add(viewJfye);
        }
        page.setData(viewList);
        page.setTotal(ptPage.getTotal());
        page.setCurrPage(ptPage.getCurrPage());
        page.setPageCnt(ptPage.getPageCnt());
        page.setPageSize(ptPage.getPageSize());
        page.setStart(ptPage.getStart());
        page.setEnd(ptPage.getEnd());
        page.setMap(ptPage.getMap());
        page.setParam(ptPage.getParam());
        return page;
    }

    /**
     * getZyJftjar,(平台自营积分统计（按日）). <br/>
     * Author: zhucb <br/>
     * Create Date: 2016年12月5日 <br/>
     * ===============================================================<br/>
     * Modifier: zhucb <br/>
     * Modify Date: 2016年12月5日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param param 参数
     * @return Page
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getZyJftjar(ParamJfxxList param) {
        Page zyhyPage = new Page();
        com.wdcloud.opcenter.common.utils.page.Page page = new com.wdcloud.opcenter.common.utils.page.Page();
        ParamJfglxx paramJfglxx = new ParamJfglxx();
        paramJfglxx.setCurrPage(param.getCurrPage());
        paramJfglxx.setEndtime(param.getEndtime());
        paramJfglxx.setStarttime(param.getStarttime());
        paramJfglxx.setZh(param.getZh());
        paramJfglxx.setPageSize(param.getPageSize());
        page = zajfglCorsService.getHzfJftjar(paramJfglxx);
        List<ViewJftjar> hzfjftjars = (List<ViewJftjar>) page.getData();
        List<ViewJfxxList> jfList = new ArrayList<ViewJfxxList>();
        if (CollectionUtils.isNotEmpty(hzfjftjars)) {
            for (ViewJftjar tYyxtTjHzfjftjar : hzfjftjars) {
                ViewJfxxList jfxx = new ViewJfxxList();
                jfxx.setRq(tYyxtTjHzfjftjar.getTjrq());
                jfxx.setHqjf(String.valueOf(tYyxtTjHzfjftjar.getHqjf()));
                jfxx.setZcjf(String.valueOf(tYyxtTjHzfjftjar.getZcjf()));
                jfList.add(jfxx);
            }
            zyhyPage.setData(jfList);
            zyhyPage.setTotal(page.getTotal());
        }
        return zyhyPage;
    }

    /**
     * getZyJftjaxw,(平台自营积分统计（按行为）). <br/>
     * Author: zhucb <br/>
     * Create Date: 2016年12月5日 <br/>
     * ===============================================================<br/>
     * Modifier: zhucb <br/>
     * Modify Date: 2016年12月5日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param param 参数
     * @param lang 语言
     * @return Page
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getZyJftjaxw(ParamJfxxList param, String lang) {
        Page zyhyPage = new Page();
        com.wdcloud.opcenter.common.utils.page.Page page = new com.wdcloud.opcenter.common.utils.page.Page();
        ParamJfglxx paramJfglxx = new ParamJfglxx();
        paramJfglxx.setCurrPage(param.getCurrPage());
        paramJfglxx.setEndtime(param.getEndtime());
        paramJfglxx.setStarttime(param.getStarttime());
        paramJfglxx.setZh(param.getZh());
        paramJfglxx.setPageSize(param.getPageSize());
        paramJfglxx.setXw(param.getXw());
        page = zajfglCorsService.getHzfJftjaxw(paramJfglxx, lang);
        List<Viewjftjaxw> jftjaxwList = (List<Viewjftjaxw>) page.getData();
        List<ViewJfxxList> jfList = new ArrayList<ViewJfxxList>();
        if (CollectionUtils.isNotEmpty(jftjaxwList)) {
            for (Viewjftjaxw viewjftjaxw : jftjaxwList) {
                ViewJfxxList jfxx = new ViewJfxxList();
                jfxx.setRq(DateUtils.format(viewjftjaxw.getTjrq()));
                jfxx.setJfz(viewjftjaxw.getJfz());
                jfxx.setXw(viewjftjaxw.getXw());
                jfxx.setXwDesc(viewjftjaxw.getXwDesc());
                jfList.add(jfxx);
            }
            zyhyPage.setData(jfList);
            zyhyPage.setTotal(page.getTotal());
        }
        return zyhyPage;
    }

    /**
     * getJftjarPagination,获取积分收支信息(按日-分页). <br/>
     * Author: yaojie <br/>
     * Create Date: 2016年4月14日 <br/>
     * ===============================================================<br/>
     * Modifier: LiuCheng <br/>
     * Modify Date: 2016年12月5日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param paramJfsz 积分收支参数实体
     * @return 分页实体
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getQzjftjRhzPagination(ParamJfsz paramJfsz, String lang) {
        Page page = new Page();
        ParamJfszZyhj parmZyhj = new ParamJfszZyhj();
        parmZyhj.setCurrPage(paramJfsz.getCurrPage());
        parmZyhj.setPageSize(paramJfsz.getPageSize());
        // 默认条件
        if (StringUtils.isBlank(paramJfsz.getSzdq())) {
            paramJfsz.setSzdq(CommonConstants.SZDQ_ZG);
        }
        parmZyhj.setSzdq(paramJfsz.getSzdq());
        if (paramJfsz.getStartTime() != null && StringUtils.isNotEmpty(paramJfsz.getStartTime().toString())) {
            parmZyhj.setStartTime(DateUtils.format(paramJfsz.getStartTime(), DateUtils.PATTERN_DATE));
        }
        if (paramJfsz.getEndTime() != null && StringUtils.isNotEmpty(paramJfsz.getEndTime().toString())) {
            parmZyhj.setEndTime(DateUtils.format(paramJfsz.getEndTime(), DateUtils.PATTERN_DATE));
        }

        com.wdcloud.opcenter.common.utils.page.Page ptPage = zajfglCorsService.getQzjftjRhz(parmZyhj, lang);

        List<TYyxtTjQzjftjar> ls = (List<TYyxtTjQzjftjar>) ptPage.getData();
        if (ls == null) {
            page.setData(null);
            return page;
        }
        page.setData(ptPage.getData());
        page.setTotal(ptPage.getTotal());
        page.setCurrPage(ptPage.getCurrPage());
        page.setPageCnt(ptPage.getPageCnt());
        page.setPageSize(ptPage.getPageSize());
        page.setStart(ptPage.getStart());
        page.setEnd(ptPage.getEnd());
        page.setMap(ptPage.getMap());
        page.setParam(ptPage.getParam());
        return page;
    }

    /**
     * getJftjaraxwPagination,获取积分收支信息(按行为-分页). <br/>
     * Author: yaojie <br/>
     * Create Date: 2016年4月14日 <br/>
     * ===============================================================<br/>
     * Modifier: LiuCheng <br/>
     * Modify Date: 2016年12月5日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param paramJfsz 积分收支参数实体
     * @param lang 语言
     * @return 分页实体
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getJftjaraxwPagination(ParamJfsz paramJfsz, String lang) {
        Page page = new Page();
        ParamJfszZyhj parmZyhj = new ParamJfszZyhj();
        parmZyhj.setCurrPage(paramJfsz.getCurrPage());
        parmZyhj.setPageSize(paramJfsz.getPageSize());

        // 默认条件
        if (StringUtils.isBlank(paramJfsz.getSzdq())) {
            paramJfsz.setSzdq(CommonConstants.SZDQ_ZG);
        }
        parmZyhj.setSzdq(paramJfsz.getSzdq());

        if (paramJfsz.getJfszxw() != null && StringUtils.isNotEmpty(paramJfsz.getJfszxw().toString()) && !("-1".equals(paramJfsz.getJfszxw()))) {
            parmZyhj.setJfszxw(paramJfsz.getJfszxw());
        }
        if (paramJfsz.getStartTime() != null && StringUtils.isNotEmpty(paramJfsz.getStartTime().toString())) {
            parmZyhj.setStartTime(DateUtils.format(paramJfsz.getStartTime(), DateUtils.PATTERN_DATE));
        }
        if (paramJfsz.getEndTime() != null && StringUtils.isNotEmpty(paramJfsz.getEndTime().toString())) {
            parmZyhj.setEndTime(DateUtils.format(paramJfsz.getEndTime(), DateUtils.PATTERN_DATE));
        }

        com.wdcloud.opcenter.common.utils.page.Page ptPage = zajfglCorsService.getQzjftjRhzAxw(parmZyhj, lang);

        List<TYyxtTjQzjftjar> ls = (List<TYyxtTjQzjftjar>) ptPage.getData();
        if (ls == null) {
            page.setData(null);
            return page;
        }
        page.setData(ptPage.getData());
        page.setTotal(ptPage.getTotal());
        page.setCurrPage(ptPage.getCurrPage());
        page.setPageCnt(ptPage.getPageCnt());
        page.setPageSize(ptPage.getPageSize());
        page.setStart(ptPage.getStart());
        page.setEnd(ptPage.getEnd());
        page.setMap(ptPage.getMap());
        page.setParam(ptPage.getParam());
        return page;
    }

    /**
     * getJfhqmxPagination,获取积分明细(分页). <br/>
     * Author: yaojie <br/>
     * Create Date: 2016年4月15日 <br/>
     * ===============================================================<br/>
     * Modifier: yaojie <br/>
     * Modify Date: 2016年4月15日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param paramJfsz 积分收支参数实体
     * @param lang 语言
     * @return 积分(获取/支出)明细Page
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getJfhqmxPagination(ParamJfsz paramJfsz, String lang) {
        Page page = new Page();
        ParmPtHqmx parmPtHqmx = new ParmPtHqmx();
        parmPtHqmx.setCurrPage(paramJfsz.getCurrPage());
        parmPtHqmx.setPageSize(paramJfsz.getPageSize());
        parmPtHqmx.setJfhqStart(paramJfsz.getStartTime());
        parmPtHqmx.setJfhqEnd(paramJfsz.getEndTime());
        parmPtHqmx.setSyfw(paramJfsz.getSyfw());
        parmPtHqmx.setSzdq(paramJfsz.getSzdq());
        parmPtHqmx.setZhlx(paramJfsz.getZhlx());
        com.wdcloud.opcenter.common.utils.page.Page ptPage = zajfglCorsService.getPtjfHqmx(parmPtHqmx, lang);
        List<ViewPthqmx> viewPthqmxList = (List<ViewPthqmx>) ptPage.getData();
        List<ViewHqmx> viewHqmxList = new ArrayList<ViewHqmx>();
        if (CollectionUtils.isNotEmpty(viewPthqmxList)) {
            for (ViewPthqmx viewPthqmx : viewPthqmxList) {
                ViewHqmx viewHqmx = new ViewHqmx();
                CommonConstants.copyProperties(viewHqmx, viewPthqmx);
                viewHqmxList.add(viewHqmx);
            }
        }
        page.setData(viewHqmxList);
        page.setTotal(ptPage.getTotal());
        page.setCurrPage(ptPage.getCurrPage());
        page.setPageCnt(ptPage.getPageCnt());
        page.setPageSize(ptPage.getPageSize());
        page.setStart(ptPage.getStart());
        page.setEnd(ptPage.getEnd());
        page.setMap(ptPage.getMap());
        page.setParam(ptPage.getParam());
        return page;
    }

    /**
     * getJfzcmxPagination,支出积分明细(分页). <br/>
     * Author: yaojie <br/>
     * Create Date: 2016年4月15日 <br/>
     * ===============================================================<br/>
     * Modifier: yaojie <br/>
     * Modify Date: 2016年4月15日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param paramJfsz 积分收支参数实体
     * @param lang 语言
     * @return 积分(获取/支出)明细Page
     * @since JDK 1.7
     */
    @SuppressWarnings("unchecked")
    public Page getJfzcmxPagination(ParamJfsz paramJfsz, String lang) {
        Page page = new Page();
        ParmPtzcmx parm = new ParmPtzcmx();
        parm.setCurrPage(paramJfsz.getCurrPage());
        parm.setPageSize(paramJfsz.getPageSize());
        parm.setJfzcStart(paramJfsz.getStartTime());
        parm.setJfzcEnd(paramJfsz.getEndTime());
        parm.setSyfw(paramJfsz.getSyfw());
        parm.setSzdq(paramJfsz.getSzdq());
        parm.setZhlx(paramJfsz.getZhlx());
        com.wdcloud.opcenter.common.utils.page.Page ptPage = zajfglCorsService.getPtjfzcmx(parm, lang);
        List<ViewPtzcmx> list = (List<ViewPtzcmx>) ptPage.getData();
        List<ViewZcmx> listViewZcmx = new ArrayList<ViewZcmx>();
        if (list != null) {
            for (ViewPtzcmx viewPtzcmx : list) {
                ViewZcmx viewZcmx = new ViewZcmx();
                CommonConstants.copyProperties(viewZcmx, viewPtzcmx);
                listViewZcmx.add(viewZcmx);
            }
        }
        page.setData(listViewZcmx);
        page.setTotal(ptPage.getTotal());
        page.setCurrPage(ptPage.getCurrPage());
        page.setPageCnt(ptPage.getPageCnt());
        page.setPageSize(ptPage.getPageSize());
        page.setStart(ptPage.getStart());
        page.setEnd(ptPage.getEnd());
        page.setMap(ptPage.getMap());
        page.setParam(ptPage.getParam());
        return page;
    }

}
